package com.hzy.controller;

import com.hzy.pojo.Result;
import com.hzy.utils.AliOssUtil;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.io.InputStream;
import java.util.UUID;

@RestController
public class FileUploadController {

    // 上传文件接口
    @PostMapping("upload")
    public Result<String> upload(@RequestPart("file") MultipartFile file) throws Exception {
        // 判断文件是否为空
        if (file.isEmpty()) {
            return Result.error("上传文件不能为空！");
        }

        // 获取文件原始名称
        String originalFilename = file.getOriginalFilename();
        if (originalFilename == null) {
            return Result.error("文件名称无效！");
        }

        // 生成唯一的文件名
        String filename = UUID.randomUUID().toString() + originalFilename.substring(originalFilename.lastIndexOf("."));

        // 获取文件的输入流
        try (InputStream inputStream = file.getInputStream()) {
            // 将文件上传到阿里云 OSS
            String url = AliOssUtil.uploadFile(filename, inputStream);
            return Result.success(url);
        } catch (IOException e) {
            // 捕获上传过程中的异常并返回错误信息
            e.printStackTrace();
            return Result.error("文件上传失败！请稍后再试。");
        }
    }
}
